node.jsのいろいろなモジュール43 – 一定時間ごとにストリームを処理する
ストリーム処理のモジュール
今回紹介するモジュールは、同期データを一定時間ごとに処理することができるnode-interval-streamモジュールです。 大きいサイズのデータを処理するとき等、指定した秒ごとにストリームを処理して少しづつ結果を受け取ることができます。
環境構築方法
今回使用した動作環境は以下のとおりです。
- OS : MacOS X 10.7.5
- Node.js : v0.10.8
- npm : 1.2.23
npmを使用して必要なモジュールをインストールしましょう。
% npm install request interval-stream
サンプルコード
Githubにあるサンプルを元に、レスポンスのJSONデータを ローカルファイルとして少しづつ取得してみましょう。 下記サンプルでは、2秒ごとにリクエスト先から少しづつJSONデータを受け取ります。 結果はローカルのファイルに出力していきます。
// app.js var fs = require("fs"); var request = require('request'); var IntervalStream = require('interval-stream'); var is = new IntervalStream(2000); request('http://isaacs.couchone.com/registry/_all_docs') .pipe(is) .pipe(fs.createWriteStream('out.json'));
上記プログラムを実行しながら、ローカルに出力されたout.jsonをtailでみてみましょう。 2秒ごとにout.jsonにデータが追加されていきます。
% tail -f out.json {"total_rows":39502,"offset":0,"rows":[ {"id":"","key":"","value":{"rev":"1-6e36a93ad72045c526b919518ea16dd0"}} ・ ・
まとめ
requestモジュールに1つpipe処理をはさむだけでいいので、簡単に使えますね。